Excitação harmônica fixa no espaço#

Nesta seção o equacionamento realizado considerou a aplicação de uma força harmônica atuando apenas na direção \(x\) excitando o sitema conforme proposto no livro texto da disciplina, “Rotordynamics Prediction in Engineering, Second Edition”, Lalanne and Ferraris [1998].

Foram calculadas as amplitudes de vibração em função da velocidade de rotação

Importando módulos e configurando o ambiente#

'''
    Bibliotecas de terceira parte
'''
import numpy as np
import plotly.graph_objects as go

import plotly.io as pio
pio.renderers.default = "notebook_connected"

'''
    Biblioteca criada para a realização das análises dinâmicas
    no contexto da disciplina
'''
import rotor_analysis as rd

'''
    Configurando pint.Quantity
'''
Q_ = rd.Q_
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 14
      8 pio.renderers.default = "notebook_connected"
     10 '''
     11     Biblioteca criada para a realização das análises dinâmicas
     12     no contexto da disciplina
     13 '''
---> 14 import rotor_analysis as rd
     16 '''
     17     Configurando pint.Quantity
     18 '''
     19 Q_ = rd.Q_

File /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/rotor_analysis/__init__.py:54
     52 from .rotordynamics import Disc, Shaft, Rotor
     53 from .utilities import Material, Q_
---> 54 from .results import (
     55     add_secondary_yaxis,
     56     campbell_diagram_axial_forces,
     57     create_video_from_frames,
     58     FFT,
     59     interactive_orbit,
     60     interactive_orbit_campbell,
     61     interactive_orbit_campbell_async,
     62     interactive_orbit_fixed_speed,
     63     plot_vibration_amplitude,
     64     save_orbit_frames,
     65     update_circle_and_sine,
     66 )
     69 __all__ = [
     70     "add_secondary_yaxis",
     71     "campbell_diagram_axial_forces",
   (...)
     85     "update_circle_and_sine",
     86 ]

File /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/rotor_analysis/results.py:27
     25 import plotly.graph_objects as go
     26 import ipywidgets as widgets
---> 27 import cv2
     29 from typing import Any, Callable, Dict, Tuple
     30 from plotly.subplots import make_subplots

ModuleNotFoundError: No module named 'cv2'

Definindo parâmetros#

# Material instances and properties
steel = rd.Material(name='Steel',
                    density=Q_(7800, 'kg/m^3'),
                    young_modulus=Q_(2e11,"Pa"))

# Shaft
L = Q_(0.4, 'm')
shaft = rd.Shaft(outer_radius=Q_(0.01, 'm'),
                 inner_radius=Q_(0.0, 'm'),
                 length=L,
                 material=steel)

# Disc
disc = rd.Disc(outer_radius=Q_(0.150, 'm'),
               inner_radius=Q_(0.010, 'm'),
               length=Q_(0.030, 'm'),
               material=steel,
               coordinate=L/3)

# Rotor
rotor = rd.Rotor(shaft, disc)
speed_range = np.linspace(0, 9000, 101)
def A1_harm(speed, *args):
    '''Compute the displacemente aplitude of the rotor with an harmonic 
    excitation fixed in space
    
    Args:
        speed (function): Rotational speed in RPM.
        F0 (float): Asynchronous force magnitude
        f (float): Excitation frequency
    
    Remarks:
        len(args) shall be equals to 2.
    '''
    F0, f = args
    omega = 2 * np.pi * f
    k1, k2 = rotor.stiffness
    m = rotor.mass
    spin = speed / 60 * 2 * np.pi
    a = rotor.a
    div = (k1 - m * omega**2) * (k2 - m * omega**2) - a**2 * spin**2 * omega**2
    
    return F0 * rotor.f(L.m/3*2) * (k2 -  m * omega**2 ) / div


def A2_harm(speed, *args):
    '''Compute the displacemente aplitude of the rotor with an harmonic 
    excitation fixed in space
    
    Args:
        speed (function): Rotational speed in RPM.
        F0 (float): Asynchronous force magnitude
        f (float): Excitation frequency
    
    Remarks:
        len(args) shall be equals to 2.
    '''
    F0, f = args
    omega = 2 * np.pi * f
    k1, k2 = rotor.stiffness
    m = rotor.mass
    spin = speed / 60 * 2 * np.pi
    a = rotor.a
    div = (k1 - m * omega**2) * (k2 - m * omega**2) - a**2 * spin**2 * omega**2
    return --a * spin * omega * F0 * rotor.f(L.m/3*2) / div

Órbita interativa#

response = rd.plot_vibration_amplitude(A1_harm, A2_harm)

rd.interactive_orbit_fixed_speed(
    response,
    A1_harm,
    A2_harm,
    4000,
    1,
    37
)

Órbita - animação#